var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all) __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if ((from && typeof from === 'object') || typeof from === 'function') {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, {
          get: () => from[key],
          enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable,
        });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (
  (target = mod != null ? __create(__getProtoOf(mod)) : {}),
  __copyProps(
    // If the importer is in node compatibility mode or this is not an ESM
    // file that has been converted to a CommonJS file using a Babel-
    // compatible transform (i.e. "__esModule" has not been set), then set
    // "default" to the CommonJS "module.exports" for node compatibility.
    isNodeMode || !mod || !mod.__esModule
      ? __defProp(target, 'default', { value: mod, enumerable: true })
      : target,
    mod,
  )
);
var __toCommonJS = (mod) => __copyProps(__defProp({}, '__esModule', { value: true }), mod);

// src/Checkbox/CheckboxWithOther/index.tsx
var CheckboxWithOther_exports = {};
__export(CheckboxWithOther_exports, {
  default: () => CheckboxWithOther_default,
});
module.exports = __toCommonJS(CheckboxWithOther_exports);
var import_react = __toESM(require('react'));
var import_classnames = __toESM(require('classnames'));
var import_antd = require('antd');
var import_createField = __toESM(require('../../createField'));
var import_FieldContext = require('../../_utils/contexts/FieldContext');
var import_useOther = __toESM(require('../../_utils/hooks/useOther'));
var import_useRequestOptions = __toESM(require('../../_utils/hooks/useRequestOptions'));
var import_index = require('./index.less');
var CheckboxWithOther = (0, import_react.forwardRef)(
  ({ value, onChange, options: optionsOrRequest, className, ...rest }, ref) => {
    const { label } = (0, import_FieldContext.useFieldContext)();
    const { options } = (0, import_useRequestOptions.default)(optionsOrRequest);
    const otherRef = (0, import_react.useRef)('checkbox-other-' + Math.random());
    const {
      otherChecked,
      changeOtherChecked,
      selectedValue,
      changeSelectedValue,
      otherValue,
      changeOtherValue,
    } = (0, import_useOther.default)({
      mode: 'multiple',
      value,
      onChange,
      options,
    });
    const handleInputChange = (0, import_react.useCallback)(
      (event) => {
        changeOtherValue(event.target.value);
      },
      [changeOtherValue],
    );
    return /* @__PURE__ */ import_react.default.createElement(
      'span',
      { className: (0, import_classnames.default)('szzj-checkbox-with-other', className) },
      /* @__PURE__ */ import_react.default.createElement(
        import_antd.Checkbox.Group,
        {
          value: selectedValue,
          onChange: changeSelectedValue,
          ...rest,
          className: 'szzj-checkbox-with-other-checkbox',
          ref,
        },
        options.map((item) => {
          return /* @__PURE__ */ import_react.default.createElement(
            import_antd.Checkbox,
            { key: item.value, value: item.value },
            item.label,
          );
        }),
      ),
      /* @__PURE__ */ import_react.default.createElement(
        import_antd.Checkbox,
        {
          value: otherRef.current,
          checked: otherChecked,
          className: 'szzj-checkbox-with-other',
          onChange: (event) => changeOtherChecked(event == null ? void 0 : event.target.checked),
        },
        '其他',
      ),
      otherChecked &&
        /* @__PURE__ */ import_react.default.createElement(import_antd.Input, {
          placeholder: `请输入${label || ''}`,
          className: 'szzj-checkbox-with-other-input',
          maxLength: 100,
          value: otherValue,
          onChange: handleInputChange,
        }),
    );
  },
);
var CheckboxWithOther_default = (0, import_createField.default)(CheckboxWithOther);
